package com.cashmama.market.api.domain.service;

import com.cashmama.market.api.domain.vo.UserBaseInfo;
import com.cashmama.market.api.domain.vo.UserLoginInfo;
import com.cashmama.market.api.domain.vo.user.UserBriefDTO;
import com.fqgj.xjd.user.client.enums.FrozenCodeEnum;
import com.fqgj.xjd.user.client.enums.PanStatusEnum;
import com.fqgj.xjd.user.client.enums.UserKycStatusEnum;
import com.fqgj.xjd.user.client.request.*;
import com.fqgj.xjd.user.client.response.*;

import java.util.List;

/**
 * @program: market-api
 * @description
 * @author: frank
 * @create: 2019-12-20 11:30
 **/
public interface ApiUserCenterService {

    UserLoginInfo getUserLoginInfoByToken(String token);

    UserBaseInfo getUserBaseInfoByUserCode(String userCode);

    UserWork getUserWorkInfoByUserCode(String userCode);

    UserBriefDTO getUserBriefInfoByUserCode(String userCode);

    boolean pinCodeAndBirthdayStatus(String userCode);

    boolean bindUserDevice(UserAccess userAccess);

    PanStatusEnum panActionComplete(String userCode);

    UserKycStatusEnum kycActionComplete(String userCode);

    Boolean checkUserFreezeByFrozenCodeEnum(String userCode, String categoryCode, FrozenCodeEnum frozenCodeEnum);

    String getUserFrozenDate(String userCode, FrozenCodeEnum frozenCodeEnum);

    void initializationQuota(String userCode);
    void initializationQuota(String userCode, int riskLevel);

    List<UserQuotaResponse> getUserQuotaList(List<String> userCodes);

    Boolean advanceAadhaarActionComplete(String userCode);

    UserAdvanceAadhaarVo getUserAdvanceAadhaar(String userCode);

    boolean auditRejectFreeze(User user, String productCategory);

    void saveUserContactInfo(UserContact userContact, UserSocialContact userSocialContact, String appCode);

    void saveUserContactInfo(String userCode, String deviceContactUrl, String smsUrl, String appCode);

    void updateSmsInfo(String userCode, String smsUrl);

    Boolean emailComplete(String userCode);

    boolean isCreditComplete(String userCode);

    boolean isCreditCompleteByUserCode(String userCode);

    boolean isFirstRiskReject(String userCode);

    boolean isNewUser(String userCode);

    UserContactAddressBook getUserContactInfo(String userCode);

    List<UserPanInfo> getUserPanInfoList(String panCardNo);

    UserPanInfo getUserPanInfo(String userCode);

    void saveOpenBlackHistory(UserOpenBlackListRequest request);

}
